<?php
namespace app\admin\controller;
use think\Controller;
use think\Db;
use app\common\MemcacheOperate;
//后台模块方法
class Common extends Controller
{
    public $mem;
    //当任何函数加载时候  会调用此函数
    public function _initialize(){//默认的方法  会自动执行 特征有点像构造方法
        $this->mem=MemcacheOperate::getInstance();
        if(session('user'))
        {
            $name = session('user')['username'];
            $this->assign('name',$name);
        }
        else
        {
            $this->redirect('Login/index');
        }
    }

    //图片缩放
    //参数 $src_file 源图片
    //$new_path      新生成图片的存放路径
    //$new_filename  新生成图片的文件名称
    //$width         新生成图片的宽度
    //$heigth         新生成图片的高度
    public function  thumb($src_file,$new_path,$new_filename,$width,$height){
        $ch = curl_init($src_file);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $imgstream = curl_exec($ch);
        curl_close($ch);
        $im = imagecreatefromstring($imgstream);
        $x = imagesx($im);//获取图片的宽
        $y = imagesy($im);//获取图片的高
        if($x>$y){
            //图片宽大于高
            $sx = abs(($y-$x)/2);
            $sy = 0;
            $thumbw = $y;
            $thumbh = $y;
        } else {
            //图片高大于等于宽
            $sy = abs(($x-$y)/2);
            $sx = 0;
            $thumbw = $x;
            $thumbh = $x;
        }
        if(function_exists("imagecreatetruecolor"))
            $dim = imagecreatetruecolor($width,$height); // 创建目标图gd2
        else
            $dim = imagecreate($width, $height); // 创建目标图gd1
        imagecopyresized ($dim,$im,0,0,$sx,$sy,$width,$height,$thumbw,$thumbh);
        imagejpeg ($dim,$new_path.$new_filename);
        return $new_filename;
    }

    public function upload($path='pic'){
        $json=[];
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('file');
        // 移动到框架应用根目录/public/uploads/ 目录下
        if($file){
            $info = $file->move(ROOT_PATH . 'public' . DS . 'upload'. DS .$path);
            if($info){
                $filename=$info->getSaveName();
            }else{
                $filename='';
            }
            $filepath= '/upload/'.$path.'/'.$filename;
            $json['filepath']=$filepath;
        }else{
            $json['filepath']='';
        }
        echo json_encode($json);
    }

    public function get_php_file($filename) {
        return trim(file_get_contents($filename));
    }

    public function set_php_file($filename, $content) {
        $fp = fopen($filename, "w");
        fwrite($fp,$content);
        fclose($fp);
    }

    public function get($url)
    {
        $ch = curl_init($url);
        //设置结果转换
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        //发送
        $res = curl_exec($ch);
        //关闭
        curl_close($ch);
        return $res;
    }

    public function post($url, $data='')
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);//声明请求方式为post
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_TIMEOUT , 10);
        //发送
        $res = curl_exec($ch);
        //关闭
        if($res){
            curl_close($ch);
            return $res;
        }else{
            $error = curl_errno($ch);
            curl_close($ch);
            return $error;
        }
    }



    /**
     * 把数字或者数字字符串转为浮点型 递归方式
     * @param $arr
     * @return array
     */
    function strToInt($arr)
    {
        if($arr !== null){
            if(is_array($arr)){
                if(!empty($arr)){
                    foreach($arr as $key => $value){
                        if(is_numeric($value)){
                            //此处不能为intval,否则会把浮点型的价格信息转为整形
                            $arr[$key]=floatval($value);
                        }else{
                            $arr[$key] =strToInt($value);//递归再去执行
                        }
                    }
                }else{ $arr = [];}
            }
        }
        return $arr;
    }
    /**
     * 如果变量不存在,结束进程并返回错误信息
     */
    public function ajaxReturn($msg)
    {
        $json=array();
        $json['msg']=$msg;
        $json['status']='203';
        echo json_encode($json);
        die;
    }

    /**
     * 一般ajax的返回格式
     * @param $data
     */
    public function ajaxJson($data,$status=200,$msg='ok')
    {
        $data=$this->strToInt($data);
        $json=[];
        $json['data']=$data;
        $json['status']=$status;
        $json['msg']=$msg;
        echo json_encode($json);
    }

    //根据数字判断是否显示
    public function is_show($status)
    {
        if($status==1)
        {
            $res='显示';
        }
        else
        {
            $res='不显示';
        }
        return $res;
    }

    //获取父级分类名称
    public function getpname($pid)
    {
        if(!isset($pid)){
            $this->ajaxReturn('父级分类id不存在');
        }
        if($pid==0){
            $pname='一级分类';
        }else{
            $pname=DB::name('category')->where('id',$pid)->value('name');
        }
        return $pname;
    }

    //获取文章分类名称
    public function getcname($id)
    {
        if(!isset($id)){
            $this->ajaxReturn('分类id不存在');
        }
        $cname=DB::name('category')->where('id',$id)->value('name');
        return $cname;
    }

    //获取性别
    public function getsex($num)
    {
        if($num==1){
            $sex='男';
        }else{
            $sex='女';
        }
        return $sex;
    }
}
